package com.common.utils;

import java.util.Properties;

import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import com.sun.mail.util.MailSSLSocketFactory;

public class MailStmpSend {
	static final Logger logger = LoggerFactory.getLogger(MailStmpSend.class);

	/**
	 * @Description: 网易企业163邮箱发送邮件
	 * @param: "[]"
	 * @Return: void
	 * @Author: supenghui
	 * @Date: 2020/12/17 13:55
	 */
	public static boolean sendHtmlMail(String mailString, String urlString) {
		try {
			String from = "海科新源业务系统管理平台";// 发件人昵称展示
			String[] to = { mailString };// 接收邮箱
//			String to = "chenjun@xyspec.com";// 接收邮箱
//            String[] copy = {"XXX", "XXX"};//抄送邮箱
			String copy = "chenjun@hi-techspring.com";// 抄送邮箱
			String subject = "重置密码";// 邮件主题
			String text = "你好，请点击按钮‘点我重置’，有效期两小时：" + "  <a href='" + urlString + "'>点我重置</a>";
			String host = "smtphz.qiye.163.com";// 163企业邮箱smtp
			String username = "chenjun@hi-techspring.com";// 企业邮箱 @后面是域名
			String password = "bvt9tJpvbZ6b4nEk";// 企业邮箱密码
			// 一、创建参数配置, 用于连接邮件服务器的参数配置
			Properties prop = new Properties();
			prop.setProperty("mail.smtp.auth", "true"); // 需要经过授权，也就是用户名和密码的校验，这样才能通过验证（一定要有这一条）
			prop.setProperty("mail.smtp.timeout", "994"); // 加密端口(ssl) 可通过 https://qiye.163.com/help/client-profile.html
			MailSSLSocketFactory sf = new MailSSLSocketFactory();// SSL加密
			sf.setTrustAllHosts(true); // 设置信任所有的主机
			prop.put("mail.smtp.ssl.enable", "true");
			prop.put("mail.smtp.ssl.socketFactory", sf);
			// 二、创建一封复杂邮件（文本+附件）
			JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();
			// 3.1. 创建邮件对象
			MimeMessage message = javaMailSend.createMimeMessage();
			MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");
			// 3.2. From: 发件人
			String nick = MimeUtility.encodeText(from);// 设置昵称
			messageHelper.setFrom(new InternetAddress(nick + " <" + username + ">"));// 邮件发送者
			// 3.3. To: 收件人（可以增加多个收件人）
			messageHelper.setTo(to); // 收件人
			// 3.4. To: 收件人（可以增加多个抄送）
			messageHelper.setCc(copy); // 抄送人
			// 3.5. Subject: 邮件主题
			messageHelper.setSubject(subject); // 邮件标题
			// 3.6. 邮件内容
			messageHelper.setText(text, true); // 文本中，如需换行，要用<br>，不能用\n换行
			// 3.7. 邮件附件
//            File file = new File("D:\\data\\ftpUpload\\2020\\12\\10\\盖章指令文件.zip");
//            messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
			// 3.8. 设置邮件服务器登录信息
			javaMailSend.setHost(host);
			javaMailSend.setUsername(username);
			javaMailSend.setPassword(password);
			javaMailSend.setJavaMailProperties(prop);
			// 六、 发送邮件,
			javaMailSend.send(message);

		} catch (Exception e) {
			logger.error(e.getMessage());
			return false;
		}
		return true;
	}
}
